#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
taichi_dither 基本用法示例
该示例展示了如何使用taichi_dither处理图像并保存结果
"""

import taichi as ti
import os
import time
from taichi_dither import DitherFactory, DitherAlgorithm, BayerDitherer

ARCH = 'gpu'
BIT_DEPTH = 4

def main():
    """
    基本示例：处理图像并显示结果，使用内核缓存优化性能
    """
    # 获取脚本所在目录
    script_dir = os.path.dirname(os.path.abspath(__file__))
    img_path = os.path.join(script_dir, 'test.jpg')
    
    # 确保测试图像存在
    if not os.path.exists(img_path):
        print(f"错误：测试图像不存在: {img_path}")
        print("请在examples目录中放置一个名为test.jpg的测试图像")
        return
    
    # 使用示例
    ditherer = DitherFactory.create_ditherer(
        algorithm=DitherAlgorithm.ATKINSON, # 选择算法
        arch=ti.gpu if ARCH == 'gpu' else ti.cpu,                        # 使用GPU后端
        debug=False,                        # 是否开启调试模式
        use_cache=False                      # 是否启用编译缓存（推荐开启）
    )
    
    start_time = time.time()
    
    # 处理图像
    img_color = ditherer.process_image(
        img_path, 
        num_colors=BIT_DEPTH,           # 色值数量，默认为2（黑白）
        use_color=True,         # 处理为彩色图像（True）或灰白图像（False）
        output_width=500,       # 指定输出宽度，如果原图不足250宽，则不会放大
    )
    
    end_time = time.time()
    first_run_time = end_time - start_time
    print(f"第一次处理耗时(含编译): {first_run_time:.4f} 秒")
    
    # 保存处理后的图像
    output_filename = 'output_color_'+ ARCH + '.jpg'
    ditherer.save_image(img_color, output_filename)
    ditherer.save_bmp_with_palette(img_color, 'output_color_'+ ARCH + '.bmp', bit_depth=BIT_DEPTH)
    
    print(f"已保存图像到: {output_filename}")

if __name__ == "__main__":
    main() 